package com.ttxs.common.core.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * User Account and Authentication 配置类
 */
@ConfigurationProperties("ttxs.security")
@Configuration
@Data
public class SecurityProperties {

    /**
     * 鉴权开关，默认开启。除excludes和whiteList外，都需要鉴权
     */
    private boolean enableAuth = true;
    /**
     * 前端服务器地址，未使用nginx代理，跨域时需要配置
     */
    private List<String> allowedOrigins = new ArrayList<>();
    /**
     * 排除列表，需要登录，但不需要鉴权
     */
    private Set<String> excludes = new HashSet<>();
    /**
     * 白名单，无需登录，无需鉴权
     */
    private Set<String> whiteList = new HashSet<>();
    /**
     * 安全key开关，默认为True，只能通过网关访问服务
     * 如果应用或微服务部署在内网或确定安全，可以设置为false，关闭此功能
     */
    private Boolean secretKeyEnabled = Boolean.TRUE;
    /**
     * 网关安全key过期时间
     */
    private int secretKeyExpiration = 5 * 60;
    /**
     * 网关安全Key过期前1分钟，小于该时间从新生成key，防止下游服务请求超时
     */
    private int secretKeyLastTime = 60;
}
